「活蹦亂跳、人見人愛的程式碼」
#LegacyCode #LivingCode
承上一則 post 提到,什麼是 legacy code?
「沒有自動測試保護的就是 legacy code」,在 Michael Feathers 的 Working Effectively with Legacy Code 書裡這麼寫。
之前自己只覺得,這句話就只是像定義式般的有道理,但感覺像隔靴搔癢一樣,沒有直接命中心情。當我在實務上踢破了幾道門檻後,我更深深地理解這句話的意義多麼有道理。
什麼是 legacy code? 講直白一點就是沒爹沒娘沒靠山,被人射後不理的 code, 誰都可能欺負他、弄壞他,簡直就是一直像死了般卻仍活著的 code.
另外一種則是跟著測試程式共生,一直活著的 production code,那是種活跳跳、新鮮的程式碼,充滿活力真實活著的程式碼,需求喜歡找它互動,因爲感覺放心可靠而總是無後顧之憂。產品程式碼、測試程式、活文件他們三兄弟總是團結一致,這才叫「活著」的產品、「活著」的程式碼。
想找個例子比喻一下大家都不喜歡和 legacy code 打交道的感覺,我腦袋不自覺地浮出一個「無間道」的畫面。
琛哥說:「你見過有人跟死屍握手的嗎?」。